﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WorkFlowCore.Workflows;

namespace WorkFlowCore.Host.ViewModels.WorkFlowCore
{
    public class WorkflowNodeDto
    {
        public Guid Id { get; set; }
        /// <summary>
        /// 节点名称
        /// </summary>
        [Required]
        [StringLength(50)]
        public string Name { get; set; }

        /// <summary>
        /// 节点类型
        /// </summary>
        public WorkNodeType NodeType { get; set; }
        /// <summary>
        /// 绘制信息，前端绘制所需信息
        /// </summary>
        public string DrawingInfo { get; set; }
        /// <summary>
        /// 是否等待所有人处理（默认为否）
        /// </summary>
        public bool IsWaitingAllUser { get; set; }
        /// <summary>
        /// 用户选择器
        /// </summary>
        public List<NodeUser> UserSelectors { get; set; }

        /// <summary>
        /// 拒绝节点
        /// </summary>
        public List<RejectNode> RejectNodes { get; set; }
        /// <summary>
        /// 审批模式：作为 IsWaitingAllUser 的补充
        /// </summary>
        public ProveModeEnum ProveMode { get; set; }
        /// <summary>
        /// 自动处理同用户。
        /// 为 null（兼容早期版本，默认自动处理） 或者 true 时，自动处理
        /// </summary>
        public bool? IsAutoHandleSameUserStep { get; set; }
        /// <summary>
        /// 是否忽略创建人，当一个节点有多人审批时生效。
        /// 不为 null（兼容早期版本，默认不忽略） 且 为 true 时，才忽略
        /// </summary>
        public bool? IsIgnoreCreator { get; set; }
    }
}
